package cn.yotta.user.core.server.service;

import cn.yotta.common.api.model.IdRequest;
import cn.yotta.common.api.model.IdsRequest;
import cn.yotta.common.api.model.Paging;
import cn.yotta.user.api.params.user.UserPageRequest;
import cn.yotta.user.api.params.user.UserStatusChangeRequest;
import cn.yotta.user.api.vo.UserVo;

import java.util.List;

/**
 * @author wyaoyao
 * @date 2023/3/10 21:09
 */
public interface UserService {

    /***
     * 根据用户id查询用户
     * @param request 请求参数
     * @return 查询结果
     */
    List<UserVo> findUserByIds(IdsRequest request);

    /**
     * 根据用户id查询用户
     * @param request  请求参数
     * @return 查询结果
     */
    UserVo findUserById(IdRequest request);

    /**
     * 用户信息基础分页查询
     * @param pageRequest  请求参数
     * @return 查询结果
     */
    Paging<UserVo> page(UserPageRequest pageRequest);

    /**
     *  冻结用户
     * @param userFreezeRequest  请求参数
     * @return 查询结果
     */
    Boolean freeze(UserStatusChangeRequest userFreezeRequest);

    /**
     * 解冻用户
     * @param request  请求参数
     * @return 当前操作是否成功； true表示成功，false表示失败，或者没有查到当前用户
     */
    Boolean unFreeze(UserStatusChangeRequest request);

    /**
     * 启用用户
     * @param userStatusChangeRequest  请求参数
     * @return 当前操作是否成功； true表示成功，false表示失败，或者没有查到当前用户
     */
    Boolean enable(UserStatusChangeRequest userStatusChangeRequest);

    /**
     * 禁用用户
     * @param userStatusChangeRequest  请求参数
     * @return 当前操作是否成功； true表示成功，false表示失败，或者没有查到当前用户
     */
    Boolean disable(UserStatusChangeRequest userStatusChangeRequest);
}
